package com.yunxin.admin.system.application;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yunxin.admin.system.application.command.RolePageCommand;
import com.yunxin.admin.system.application.dto.OptionDTO;
import com.yunxin.admin.system.application.dto.RoleInfoDTO;
import com.yunxin.admin.system.application.dto.RolePageDTO;
import com.yunxin.admin.system.infra.persistence.entity.SysRoleDO;
import com.yunxin.admin.system.infra.persistence.entity.SysUserRoleDO;

import java.util.List;

/**
 * @author zero°
 * @since 2023-07-11
 */
public interface RoleQueryService {

    /**
     * 角色分页列表
     *
     * @param command command
     * @return Page<RolePageDTO>
     */
    Page<RolePageDTO> getRolePage(RolePageCommand command);


    SysRoleDO getRoleByCode(String code);


    /**
     * 角色下拉列表
     *
     * @return ListOptionDTO<Long>>
     */
    List<OptionDTO<Long>> listRole();


    /**
     * 获取角色的菜单ID集合
     *
     * @param roleId 角色ID
     * @return 菜单ID集合(包括按钮权限ID)
     */
    List<Long> getRoleMenuIds(Long roleId);
    /**
     * 获取角色表单数据
     *
     * @param roleId 角色ID
     * @return RoleInfoDTO
     */
    RoleInfoDTO getRoleById(Long roleId);

    /**
     * 获取用户角色
     *
     * @param userId 用户ID
     * @return 菜单ID集合(包括按钮权限ID)
     */
    List<SysUserRoleDO> getRoleListByUserId(Long userId);

}
